/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package lu.med.praxiswahl.wahlumed.service.beans;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Remote;
import javax.ejb.Stateless;

import lu.med.praxiswahl.wahlumed.dao.beans.daointerface.OrdonanceTemplateDAOInt;
import lu.med.praxiswahl.wahlumed.model.beans.OrdonanceTemplateTBL;
import lu.med.praxiswahl.wahlumed.service.beans.serviceinterface.OrdonanceTemplateServiceInt;

/**
 * 
 * @author pkendzo
 */

@Stateless
@Remote({ OrdonanceTemplateServiceInt.class })
public class OrdonanceTemplateService implements OrdonanceTemplateServiceInt {

	private OrdonanceTemplateTBL tmpOrdTempl;
	@EJB
	private OrdonanceTemplateDAOInt tmpOrdTemplDao;

	public OrdonanceTemplateService() {
		tmpOrdTempl = new OrdonanceTemplateTBL();
	}

	@Override
	public int createTemplate(String label, String typ, String text) {
		tmpOrdTempl.setLabel(label);
		tmpOrdTempl.setTyp(typ);
		tmpOrdTempl.setText(text);

		tmpOrdTemplDao.persist(tmpOrdTempl);

		return RET_OPERATION_DONE_PROPERLY;

	}

	@Override
	public int deleteTemplate(Long id) {
		tmpOrdTemplDao.delete(id);

		return RET_OPERATION_DONE_PROPERLY;
	}

	@Override
	public void getA_OrdonanceTemplateInstance(OrdonanceTemplateTBL tmpOrdTempl) {
		this.tmpOrdTempl = tmpOrdTempl;

	}

	@Override
	public String getOrdonanceTemplateMainTxt(Long id) {
		// return tmpOrdTempl.getText();
		return tmpOrdTemplDao.retrieveOrdonanceTemplateByID(id).getText();
	}

	@Override
	public Long[] getOrdonancenVorlagenBy_Typ(String typ) {
		List<OrdonanceTemplateTBL> tmp = tmpOrdTemplDao
				.listOrdonanceTemplateBy_Typ(typ);
		Long[] templateIDs = new Long[tmp.size()];

		for (int i = 0; i < tmp.size(); i++) {
			templateIDs[i] = tmp.get(i).getId();
		}
		return templateIDs;
	}

	@Override
	public void updateActualTemplate(Long id, String label, String text) {
		OrdonanceTemplateTBL ord = tmpOrdTemplDao
				.retrieveOrdonanceTemplateByID(id);
		ord.setLabel(label);
		ord.setText(text);
		tmpOrdTemplDao.update(ord);

		/*
		 * tmpOrdTempl.setLabel(label); tmpOrdTempl.setText(text);
		 * 
		 * tmpOrdTemplDao.update(tmpOrdTempl);
		 */

	}

	public String getOrdonanceTemplateLabel(Long id) {
		// return tmpOrdTempl.getLabel();
		return tmpOrdTemplDao.retrieveOrdonanceTemplateByID(id).getLabel();
	}

	public void getOrdonanceTemplate(Long id) {
		tmpOrdTempl = tmpOrdTemplDao.retrieveOrdonanceTemplateByID(id);
	}

	@Override
	public OrdonanceTemplateTBL[] getOrdonancenVorlagenByTyp(String typ) {
		List<OrdonanceTemplateTBL> tmp = tmpOrdTemplDao
				.listOrdonanceTemplateBy_Typ(typ);
		OrdonanceTemplateTBL[] eintraege = new OrdonanceTemplateTBL[tmp.size()];

		for (int i = 0; i < tmp.size(); i++) {
			eintraege[i] = (OrdonanceTemplateTBL) tmp.get(i);
		}
		return eintraege;
	}

}
